package io.netty.example.study.client.codec;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.example.study.common.RequestMessage;
import io.netty.example.study.common.ResponseMessage;
import io.netty.handler.codec.MessageToMessageDecoder;

import java.util.List;

/**
 * 客户端二次解码器，从 ByteBuf 到 ResponseMessage；
 * MessageToMessageDecoder<ByteBuf> 中的 ByteBuf 是 Input；
 */
public class OrderProtocolDecoder extends MessageToMessageDecoder<ByteBuf> {

    /**
     * ResponseMessage 是业务逻辑的数据结构，Netty 提供的这个接口，将数据从框架数据结构，转出到业务数据结构；
     * @param ctx
     * @param msg
     * @param out
     * @throws Exception
     */
    protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List<Object> out) throws Exception {
        ResponseMessage responseMessage = new ResponseMessage();
        responseMessage.decode(msg);
        out.add(responseMessage);
    }

}
